#include "contactcontroller.h"

ContactController::ContactController(ContactSignal* signal)
{
    this->signal=signal;
}
void ContactController::BeginContact(b2Contact *contact){
    b2Body* a=contact->GetFixtureA()->GetBody();
    b2Body* b=contact->GetFixtureB()->GetBody();
    string aName=a->GetName();
    string bName=b->GetName();
    qDebug()<<"beginContact;"<<QString(aName.c_str())<<","<<QString(bName.c_str())<<endl;
    if((bName=="p1"||bName=="p2")&&aName=="ground"){
        qDebug()<<"落地";
        //发出信号， 人物已经落地
        signal->emitIsOnFloor(QString(bName.c_str()));
    }else  if(bName=="p1AttackArea"&&aName=="p2"){
        // p1 击中p2
        //发出信号，p2被普通攻击击中
        signal->emitAttacked(QString(bName.c_str()));
    }else  if(bName=="p2AttackArea"&&aName=="p1"){
        // p2 击中p1
        //发出信号，p1被普通攻击击中
        signal->emitAttacked(QString(bName.c_str()));
    }else  if(bName=="p1CombinationAttackArea"&&aName=="p2"){
        // p1 组合技击中p2
        //发出信号，p2被组合技击中攻击击中
        signal->emitCombinationAttacked(QString(bName.c_str()));
    }else  if(bName=="p2CombinationAttackArea"&&aName=="p1"){
        // p 2组合技击中p1
        //发出信号，p1被组合技击中攻击击中
        signal->emitCombinationAttacked(QString(bName.c_str()));
    }
    if(aName=="p1"&&bName=="p2"){
        qDebug()<<"人物碰撞"<<endl;
    }

}
